unit unitmainform;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LR_Class, LR_Desgn, LR_DBSet, Forms, Controls,
  Graphics, Dialogs, Menus, ComCtrls, Buttons, pqconnection, sqldb, db;

type
  config = record
    codigo_sucursal : string[3];
    host : string[50];
    db : string[20];
    user : string[20];
    passwd : string[20];
  end;

type

  { TMainForm }

  TMainForm = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    DataSource1: TDataSource;
    frDBDataSet1: TfrDBDataSet;
    frDesigner1: TfrDesigner;
    frReport1: TfrReport;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem10: TMenuItem;
    MenuItem11: TMenuItem;
    MenuItem12: TMenuItem;
    MenuItem13: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    MenuItem6: TMenuItem;
    MenuItem7: TMenuItem;
    MenuItem8: TMenuItem;
    MenuItem9: TMenuItem;
    PQConnection1: TPQConnection;
    SQLQuery1: TSQLQuery;
    SQLTransaction1: TSQLTransaction;
    StatusBar1: TStatusBar;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure frReport1GetValue(const ParName: String; var ParValue: Variant);
    procedure MenuItem10Click(Sender: TObject);
    procedure MenuItem11Click(Sender: TObject);
    procedure MenuItem13Click(Sender: TObject);
    procedure MenuItem2Click(Sender: TObject);
    procedure MenuItem3Click(Sender: TObject);
    procedure MenuItem4Click(Sender: TObject);
    procedure MenuItem6Click(Sender: TObject);
    procedure MenuItem7Click(Sender: TObject);
    procedure MenuItem8Click(Sender: TObject);
  private
    { private declarations }
  public
    actividad : string;
    desde : string;
    hasta : string;
  end;

var
  MainForm: TMainForm;
  archivo : file of config;
  registro : config;

implementation

uses
  unitformconfig, unitadmactividades, unitadmespacios, unitadmalumnos, unitalumnos, unitcontrolasistencia, unitactividades;

{$R *.lfm}

{ TMainForm }

procedure TMainForm.MenuItem4Click(Sender: TObject);
begin
  Close();
end;

procedure TMainForm.MenuItem6Click(Sender: TObject);
begin
  FormAdmActividades.Caption := 'Administrar Actividades';
  FormAdmActividades.ShowModal;
end;

procedure TMainForm.MenuItem7Click(Sender: TObject);
begin
  FormAdmAlumnos.ShowModal;
end;

procedure TMainForm.MenuItem8Click(Sender: TObject);
begin
  FormAdmEspacios.ShowModal;
end;

procedure TMainForm.FormShow(Sender: TObject);
begin
  if PQConnection1.Connected = False then
  begin
    if FileExists('configuracion.dat') = False then
    begin
      ShowMessage('SISTEMA SIN CONFIGURAR!');
      FormConfig.ShowModal;
    end;

    AssignFile(archivo, 'configuracion.dat');
    Reset(archivo);
    Read(archivo, registro);
    CloseFile(archivo);

    PQConnection1.HostName := registro.host;
    PQConnection1.DatabaseName := registro.db;
    PQConnection1.Username := registro.user;
    PQConnection1.Password := registro.passwd;

    PQConnection1.Connected := True;

    StatusBar1.Panels[0].Text := 'Conectado! Host: ' + registro.host + ' // DB: ' + registro.db;
  end;
end;

procedure TMainForm.frReport1GetValue(const ParName: String;
  var ParValue: Variant);
begin
  if ParName = 'actividad' then
    ParValue := actividad;
  if ParName = 'desde' then
    ParValue := desde;
  if ParName = 'hasta' then
    ParValue := hasta;
end;

procedure TMainForm.MenuItem10Click(Sender: TObject);
begin
  actividad := '(TODAS LAS ACTIVIDADES)';

  if SQLQuery1.Active = true then
    SQLQuery1.Close;

  SQLQuery1.SQL.Text := 'select * from alumno where alm_activo = true order by alm_apellido';

  SQLQuery1.Open;

  frReport1.LoadFromFile('alumnosactivos.lrf');
  frReport1.ShowReport;
end;

procedure TMainForm.MenuItem11Click(Sender: TObject);
begin
  FormAdmActividades.Caption := 'Seleccione Actividad';
  FormAdmActividades.ShowModal;

  actividad := FormAdmActividades.dpt_nombre;

  if SQLQuery1.Active = true then
    SQLQuery1.Close;

  SQLQuery1.SQL.Text := 'select * from vw_almdpt where alm_activo = true and dpt_cdg = ' + FormAdmActividades.dpt_cdg
    + ' order by alm_apellido';

  SQLQuery1.Open;

  frReport1.LoadFromFile('alumnosactivos.lrf');
  frReport1.ShowReport;
end;

procedure TMainForm.MenuItem13Click(Sender: TObject);
begin
  FormAdmActividades.Caption := 'Seleccione Actividad';
  FormAdmActividades.ShowModal;

  desde := InputBox('Control de Asistencia', 'Ingrese fecha desde...', FormatDateTime('dd/mm/yyyy', Date));
  hasta := InputBox('Control de Asistencia', 'Ingrese fecha hasta...', FormatDateTime('dd/mm/yyyy', Date));

  desde := desde + ' 00:00:00';
  hasta := hasta + ' 23:59:59';

  actividad := FormAdmActividades.dpt_nombre;

  if SQLQuery1.Active = true then
    SQLQuery1.Close;

  SQLQuery1.SQL.Text := 'select * from vw_asistencia where dpt_cdg = ' + FormAdmActividades.dpt_cdg
    + ' and ast_fechahora >= ''' + desde + ''' and ast_fechahora <= ''' + hasta + ''' order by ast_fechahora';

  SQLQuery1.Open;

  frReport1.LoadFromFile('asistencia.lrf');
  frReport1.ShowReport;
end;

procedure TMainForm.BitBtn3Click(Sender: TObject);
begin
  FormAlumnos.Caption := 'Alta de Alumno';
  FormAlumnos.Edit1.Text := '';
  FormAlumnos.Edit2.Text := '';
  FormAlumnos.Edit3.Text := '';
  FormAlumnos.Edit4.Text := '';
  FormAlumnos.Edit5.Text := '';
  FormAlumnos.Edit6.Text := '';
  FormAlumnos.Edit7.Text := '';
  FormAlumnos.Edit8.Text := '';
  FormAlumnos.CheckBox1.Checked := false;
  FormAlumnos.CheckBox2.Checked := false;
  FormAlumnos.CheckBox3.Checked := false;
  FormAlumnos.CheckBox4.Checked := true;
  FormAlumnos.CheckBox4.Visible := false;
  FormAlumnos.Button1.Caption:='Guardar Nuevo Alumno';
  FormAlumnos.ShowModal;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  SQLQuery1.DataBase := PQConnection1;
  SQLQuery1.Transaction := SQLTransaction1;
end;

procedure TMainForm.BitBtn1Click(Sender: TObject);
begin
  FormControlAsistencia.Caption := 'Registro de entrada a una actividad...';
  FormControlAsistencia.tipo := 'ENTRADA';
  FormControlAsistencia.ShowModal;
end;

procedure TMainForm.BitBtn2Click(Sender: TObject);
begin
  FormControlAsistencia.Caption := 'Registro de salida de una actividad...';
  FormControlAsistencia.tipo := 'SALIDA';
  FormControlAsistencia.ShowModal;
end;

procedure TMainForm.MenuItem2Click(Sender: TObject);
begin
   FormConfig.ShowModal;
   ShowMessage('REINICIE EL SISTEMA PARA HACER EFECTIVOS LOS CAMBIOS');
end;

procedure TMainForm.MenuItem3Click(Sender: TObject);
begin
  frReport1.DesignReport;
end;

end.

